iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 25
0
Software Development

Swift零基礎實作旅遊景點app系列 第 25

Swift-Day25: TableView更新有分頁的API(結果失敗)

  • 分享至 

  • xImage
  •  

自己用來練習的API可以發現到有分成page1,2 ...,
https://triper.darkwing.co/api.php/story/get_story_list/token/5E7aQ3Wpmd9ZkU22/category/all/order/hot/user_id/-1/page/1
,所以必須實現說tableView下拉更新可以更新API的頁數,自己是用JSONDecoder(寫在一個名為downloadArticles的方法,來解析JSON)

func downloadArticles(url:String){
        if let url = URL(string: url){
            let task = URLSession.shared.dataTask(with: url, completionHandler: { (data, response, error) in
                if error != nil{
                    print(error!.localizedDescription)
                }
                if let downloadedData = data{
                    do{
                        let decoder = JSONDecoder()
                        let articleData = try decoder.decode(JSONData.self, from: downloadedData)
                        print(articleData.data.count)
                        self.dataFromAPI = articleData
                        DispatchQueue.main.async {
                            self.tableView.reloadData()
                        }
                    }catch{
                        print("JSON error")
                    }
                }
            })
            task.resume()
        }
    }

在ViewDidLoad()裡面寫入:

 for i in 1...2{
            self.url = "https://triper.darkwing.co/api.php/story/get_story_list/token/5E7aQ3Wpmd9ZkU22/category/all/order/hot/user_id/-1/page/\(i)"
            downloadArticles(url: url)
        }

結果在運行時,tableView會閃一下換API,但不是接在後面,現在還想不到原因。

在console可以發現有打印出兩次10,所以確實是有抓到的。


上一篇
Swift-Day24:旅遊app實作遭遇許多bug
下一篇
Swift Day-26: TableView上拉持續更新
系列文
Swift零基礎實作旅遊景點app30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
陳董粉絲
iT邦新手 5 級 ‧ 2018-01-15 15:45:25

你所謂的接在後面是不是指要把page2的data append在dataFromAPI裡而不是直接取代

對喔,但是現在弄不出來,請問您有任何想法嗎? 感謝

關鍵應該在這一行 你要加上去而不是直接取代
self.dataFromAPI = articleData

了解了,謝謝,我再試試

我要留言

立即登入留言